# -*- coding: utf-8 -*-

from typing import Any, Union


class Cmd(object):
    ''' 表示一个外部命令。
    '''

    def __call__(self, *args) -> None:
        ''' 执行命令。
        '''
        pass


class CompsiteCmd(Cmd):
    ''' 表示复合命令，即某个命令的输出被连接到另一个命令的输入。
    '''
    pass


def run(c: Union[str, Cmd], *args):
    ''' 执行一个命令。

    :param c: 待执行的命令。如果此参数是`str`类型，那么自动创建一个对应的`Cmd`对象。
    :param args: 执行命令时传递的命令行参数。
    '''
    pass
